/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package fr.afcepf.projet2.metiers.donnees.assembleur.comptes;

import fr.afcepf.projet2.metiers.donnees.dto.comptes.UtilisateurDto;
import fr.afcepf.projet2.metiers.donnees.entites.comptes.Utilisateur;
import java.util.ArrayList;
import java.util.List;

/**
 * Classe permettant l'assemblage des donnes DTO <-> ENTITES Utilisateur
 *
 * @author Alexandre Boff
 */
public class UtilisateurAssembleur {

    /**
     * Convertis une entité Utilisateur en DTO correspondant
     *
     * @param utilisateur entité à convertir
     * @return DTO correspondant
     */
    public static UtilisateurDto creationUtilisateurDto(Utilisateur utilisateur) {
        UtilisateurDto resultat = new UtilisateurDto();


        resultat.setEmail(utilisateur.getEmail());
        resultat.setIdUtilisateur(utilisateur.getIdUtilisateur());
        resultat.setMotDePasse(utilisateur.getMotDePasse());
        resultat.setNom(utilisateur.getNom());
        resultat.setPrenom(utilisateur.getPrenom());
        resultat.setSite(utilisateur.getSite());
        
        if(utilisateur.getTypeUtilisateur()!=null) {
            resultat.setTypeUtilisateur(
                    TypeUtilisateurAssembleur
                    .creationTypeUtilisateurDto
                    (utilisateur.getTypeUtilisateur()));
        }

        if (utilisateur.getCivilite() != null) {
            resultat.setCivilite(
                    CiviliteAssembleur
                    .creationCiviliteDto(
                    utilisateur.getCivilite()));
        }
        if (utilisateur.getAdresse()!=null) {
            resultat.setAdresse(
                    AdresseAssembleur
                    .creationListeAdresseDto(utilisateur.getAdresse()));
        }
        return resultat;
    }

    /**
     * Convertis une liste d'entités Utilisateur en liste de DTO correspondants
     *
     * @param listeUtilisateur liste d'entités à convertir
     * @return liste de DTOs convertis
     */
    public static List<UtilisateurDto> creationListeUtilisateurDto(List<Utilisateur> listeUtilisateur) {
        List<UtilisateurDto> resultat = new ArrayList<>();
        for (Utilisateur entite : listeUtilisateur) {
            resultat.add(creationUtilisateurDto(entite));
        }
        return resultat;
    }

    /**
     * Convertis un DTO d'Utilisateur en entité correspondante
     *
     * @param utilisateur Entité à convertir
     * @return DTO correspondant
     */
    public static Utilisateur updateUtilisateur(UtilisateurDto utilisateur) {
        Utilisateur resultat = new Utilisateur();
        resultat.setEmail(utilisateur.getEmail());
        resultat.setIdUtilisateur(utilisateur.getIdUtilisateur());
        resultat.setNom(utilisateur.getNom());
        resultat.setPrenom(utilisateur.getPrenom());
        resultat.setSite(utilisateur.getSite());
        resultat.setMotDePasse(utilisateur.getMotDePasse());
         if(utilisateur.getTypeUtilisateur()!=null) {
            resultat.setTypeUtilisateur(
                    TypeUtilisateurAssembleur
                    .updateTypeUtilisateur
                    (utilisateur.getTypeUtilisateur()));
        }
        if (utilisateur.getCivilite() != null) {
            resultat.setCivilite(
                    CiviliteAssembleur
                    .updateCivilite(
                    utilisateur.getCivilite()));
        }    
        try {
       if (utilisateur.getAdresse()!=null) {
            resultat.setAdresse(
                    AdresseAssembleur
                    .updateListeAdresse(utilisateur.getAdresse()));
        }
        }catch (Exception ex){
            System.out.println("Erreur");
        }
    return resultat;
    }

    /**
     * Convertis une liste de DTO d'Utilisateurs en entités correspondantes
     *
     * @param listeUtilisateur liste de DTOs à convertir
     * @return liste d'entités converties
     */
    public static List<Utilisateur> updateListeUtilisateur(List<UtilisateurDto> listeUtilisateur) {
        List<Utilisateur> resultat = new ArrayList<>();
        for (UtilisateurDto dto : listeUtilisateur) {
            resultat.add(updateUtilisateur(dto));
        }
        return resultat;
    }
}
